package entities.blocks;

import it.randomtower.engine.entity.Entity;

import org.newdawn.slick.GameContainer;
import org.newdawn.slick.SlickException;

import utils.ResourceManager;
import entities.base.AbstractPlayer;
import entities.base.Block;

/**
 * Ein HiddenBlock ist ein Block, der am Anfang unsichtbar ist, und erst
 * sichtbar wird, wenn der Spieler mit dem Kopf aus dem Stand drannspringt.
 * 
 * PS: Die Japaner haben es von uns geklaut!
 * 
 * @author Benjamin
 */
public class HiddenBlock extends Block {

	/**
	 * Erstellt einen neuen HiddenBlock an gegebener Position.
	 * 
	 * @param x
	 *            - die xPos
	 * @param y
	 *            - die yPos
	 */
	public HiddenBlock(float x, float y) {
		super(x, y, false);

		setGraphic(ResourceManager.getImage("blockImage"));
		setHitBox(0, 0, currentImage.getWidth(), currentImage.getHeight());

		visible = false;
	}

	@Override
	public void update(GameContainer container, int delta) throws SlickException {
		super.update(container, delta);

		AbstractPlayer e = null;
		if ((e = (AbstractPlayer) collide(Entity.PLAYER, x, y + 16)) != null && !visible) {
			if (e.speed.y >= 0 || e.y < y || Math.abs(e.speed.x) > 0)
				return;

			addType(SOLID);

			visible = true;
		}
	}
}
